package wahadlo.math;

import wahadlo.model.Model;

/**
 * Klasa służy do tworzenia obiektów funkcji matematycznych.
 * 
 * @author Koziołek
 * 
 */
public class FunctionFactory {

	/**
	 * Metoda fabrykująca, która tworzy odpowiednie obiekty funkcji na podstawie
	 * przekazanej nazwy.
	 * 
	 * @param chartType
	 *            nazwa funkcji, która ma być stworzona.
	 * @param model
	 *            model danych, który będzie przekazany do funkcji.
	 * @return Funkcja lub <code>null</code> jeżeli nie odnaleziono
	 *         odpowiedniej funkcji.
	 */
	public static Function getFunction(String chartType, Model model) {
		Function f = null;
		Double length = (Double) model.getProperties().get("length");
		Double beta = (Double) model.getProperties().get("forcing");
		Double inclination = (Double) model.getProperties().get("inclination");
		Double a0 = length * (1 - Math.cos(inclination));

		if (chartType.equals("inclination_t")) {
			f = new Location(a0, beta, length);
		} else if (chartType.equals("speed_t")) {
			f = new Speed(a0, beta, length);
		}
		return f;
	}

}
